1. Field of the Invention
This invention relates to Universal Serial Bus (USB). In particular, the invention relates to USB Host Controllers.
2. Description of Related Art
The Universal Serial Bus (USB) is an industry standard extension to the Personal Computer (PC) architecture with focus on PC peripherals. The USB supports functional data and control exchange between the USB host and a USB device as a set of either unidirectional or bi-directional pipes. USB data transfers take place between host software and a particular endpoint on a USB device. The USB host interacts with USB devices through a USB Host Controller (HC). The USB system software on the host manages interactions between USB devices and host-based device software.
The USB system software includes USB drivers, client driver software, and HC driver. In a typical PC environment, the USB drivers may exist in the Basic Input/Output System (BIOS) and the Operating System (OS). When control is transferred from the USB HC from the BIOS device driver to the OS device driver, the OS device driver saves a snapshot of all the USB input/output (I/O) registers. The OS driver will restore the snapshot of these USB I/O registers when the user wishes to perform one of the following tasks: (1) restart to Microsoft-Disk Operating System (MS-DOS), (2) select xe2x80x9cShutdown of OSxe2x80x9d, and (3) unload OS USB drivers using device manager in the OS.
The BIOS needs to determine when the transfer of control from the OS driver to the BIOS is completed. Existing techniques include use of the Configure Flag (CF). The USB HC driver sets this bit as the last action in its process of configuring the Host Controller. However, the OS device driver will have re-enumerated the USB devices and assigned new addresses. Therefore, restoring the USB I/O registers will not restore the BIOS Legacy functionality.
Therefore, there is a need to have an efficient technique to detect when the control transfer from OS device driver to BIOS is completed.